home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / WINDOWS / PROFFT.ARJ / RUBBER.CPP < prev    next >
C/C++ Source or Header  |  1992-04-26  |  5KB  |  139 lines

  1. /****************************************************************************
  2. RUBBER.CPP inneholder disse variable og funksjonene i denne rekkef°lgen.
  3. *****************************************************************************
  4. void TComplexWindow::DrawFreehand(RTMessage Msg)
  5. void TComplexWindow::WMRButtonDown(RTMessage)
  6. void TComplexWindow::WMLButtonDown(RTMessage Msg)
  7. void TComplexWindow::WMMouseMove(RTMessage Msg)
  8. void TComplexWindow::WMLButtonUp(RTMessage)
  9. ****************************************************************************/
  10.  
  11. #include <owl.h>
  12. #include <math.h>
  13. #include <edit.h>
  14. #include <scrollba.h>
  15.  
  16. #pragma hdrstop
  17. #include "profftid.h" // Symbolske konstanter
  18. #include "profft.h"   // Klassedefinisjoner
  19.  
  20. void TComplexWindow::DrawFreehand(RTMessage Msg)
  21. /****************************************************************************
  22. Denne blir kallt nσr brukeren trykker pσ venstre musknapp eller holder
  23. denne inne. Den tegner med r°dt slik at brukeren kan markere de omrσder han
  24. °nsker σ fjerne f°r han gjennomf°rer selve frihσndsfilteret.
  25.  
  26. RTMessage Msg        Inneholder koordinatene til musen.
  27.  
  28. Kodet av:     SA
  29. Modifisert:    MK 16.04.92  Bygget om for ikke σ tegne rett i det komplekse
  30.                                                  bildet, men indikere de valgte omrσder med r°dt.
  31.                                                  Tillater nσ ogsσ σ holde knappen inne og tegne.
  32.                                                  Denne ble flyttet fra TComplexWindow::
  33.                                                  WMLButtonDown og lagt i egen funksjon for σ
  34.                                                  supportere knapp nede frihσndstegning.
  35.                         MK 24.04.92  Support for to typer viskerlµr (sirkel + firkant)
  36. ****************************************************************************/
  37. {
  38.     int iX1, iX2, iY1, iY2, iRubberDiv2, iRubberSize;
  39.  
  40.     //  Hvis brukeren befinner seg i bildeomrσdet i vinduets klientomrσde
  41.     if ((Msg.LP.Lo<=bmpInfo->bmiHeader.biWidth-1) &&
  42.             (Msg.LP.Hi<=bmpInfo->bmiHeader.biHeight-1))
  43.     {
  44.         iRubberSize = ((TMainWindow *)Parent)->GetRubberSize();
  45.         iRubberDiv2 = iRubberSize/2;
  46.  
  47.         // Regner ut "boksen" som viskelµret skal dekke
  48.         if (iRubberSize>1)
  49.         {
  50.             iX1 = Msg.LP.Lo-iRubberDiv2;
  51.             iY1 = Msg.LP.Hi-iRubberDiv2;
  52.             iX2 = Msg.LP.Lo+iRubberDiv2;
  53.             iY2 = Msg.LP.Hi+iRubberDiv2;
  54.             if (iX1 < 0) iX1 = 0;
  55.             if (iY1 < 0) iY1 = 0;
  56.         }
  57.         else
  58.         {
  59.             iX1 = Msg.LP.Lo; iY1 = Msg.LP.Lo;
  60.             iX2 = iX1+1; iY2 = iY1+1;
  61.         }
  62.         if (bCircleRubber)                                            //  Hvis sirkelboks
  63.             Ellipse(DragDC, iX1, iY1, iX2, iY2);    //  tegn sirkel
  64.         else
  65.             Rectangle(DragDC, iX1, iY1, iX2, iY2);//  eller tegn firkant.
  66.     }
  67. }
  68.  
  69. void TComplexWindow::WMRButtonDown(RTMessage)
  70. /****************************************************************************
  71. Denne blir kallt nσr brukeren trykker h°yre musknapp i et komplekst
  72. bilde. Denne gir beskjed til TComplexWindow objektet om at det mσ
  73. vise seg pσ nytt, og fjerner dermed de r°de omrσdene i bildet (angre).
  74.  
  75. Kodet av:    MK
  76. ****************************************************************************/
  77. {
  78.     InvalidateRect(HWindow, NULL, TRUE);
  79. }
  80.  
  81.  
  82. void TComplexWindow::WMLButtonDown(RTMessage Msg)
  83. /****************************************************************************
  84. Denne blir kallt nσr brukeren trykker pσ venstre musknapp.
  85. Den tegner med r°dt slik at brukeren kan markere de omrσder han
  86. °nsker σ fjerne f°r han gjennomf°rer selve frihσndsfilteret.
  87.  
  88. RTMessage Msg        Inneholder koordinatene til musen. Sendes bare videre.
  89.  
  90. Kodet av:        SA
  91. Modifisert: MK    16.04.92  Support for σ tegne f°rst med r°dt.
  92. ****************************************************************************/
  93. {
  94.         if (!bButtonDown)  //  Hvis knappen ikke allerede er nede
  95.         {
  96.                 bButtonDown = TRUE;
  97.                 SetCapture(HWindow);
  98.                 DragDC = GetDC(HWindow);
  99.                 SelectObject(DragDC, hpenRed);  //  Velg pen og fyllefarge
  100.                 SelectObject(DragDC, hbrRed);        //  for frihσndstegning.
  101.                 DrawFreehand(Msg);
  102.         }
  103. }
  104.  
  105. void TComplexWindow::WMMouseMove(RTMessage Msg)
  106. /****************************************************************************
  107. Denne kalles hvis brukeren holder venstre museknapp nede, dvs. holder
  108. pσ σ tegne i det komplekse bildet.
  109.  
  110. RTMessage Msg        Inneholder koordinatene til musen som bare sendes videre.
  111.  
  112. Kodet av:        SA
  113. Modifisert:    MK  16.04.92    Skillte ut selve tegningen i egen modul
  114.                                                     for σ supportere "hold knappen inne" tegning.
  115. ****************************************************************************/
  116. {
  117.     if (bButtonDown)
  118.         DrawFreehand(Msg);
  119. }
  120.  
  121. void TComplexWindow::WMLButtonUp(RTMessage)
  122. /****************************************************************************
  123. Kalles nσr brukeren slipper knappen (dvs. er ferdig med σ tegne). Den
  124. setter kun noen systemparametre og "husker" at brukeren er ferdig med σ
  125. tegne.
  126.  
  127. Kodet av:        SA
  128. Modifisert:    MK    16.04.92  Vedlikehold/bugfix.
  129. ****************************************************************************/
  130. {
  131.     if (bButtonDown)
  132.         {
  133.                 bButtonDown = FALSE;
  134.              ReleaseCapture();
  135.              ReleaseDC(HWindow, DragDC);
  136.             }
  137. }
  138.  
  139.